package algorithm.leetcode;

import java.util.Arrays;

/**
 * @author SeonExlike
 * @since 2024/3/10
 */
public class NO27_移除元素 {
    public static void main(String[] args) {

    }

    static class SolutionViolence {
        public int removeElement(int[] nums, int val) {
            int[] handle = Arrays.stream(nums).boxed().filter(item -> item != val).mapToInt(e -> e).toArray();
            System.arraycopy(handle, 0, nums, 0, handle.length);
            return handle.length;
        }
    }

    static class SolutionGrace {
        public int removeElement(int[] nums, int val) {
            int slow = 0, fast = 0; //一对夫妇，原本都是零起点
            while (fast < nums.length) {   //但是有一个跑得快，一个跑得慢
                if (nums[fast] != val) {    //于是跑得快的那个先去寻找共同目标
                    nums[slow] = nums[fast];    //如果找到了，就送给跑得慢的那个
                    slow++;     //然后跑得慢的那个也就离目标近一点
                }
                fast++; //但是不管是否找得到，跑得快的那方都一直奔跑到生命的尽头
            }
            return slow;    //最终留下跑得慢的一方
        }
    }


}
